package com.raycloud.erp.omll.provider.service;


import com.raycloud.erp.mulplatforms.domain.*;

import java.util.Map;

/***
 * @DESCRIPTION: 订单交易dubbo接口实现
 * @author 枫伦
 * @params:
 * @return:
 * @Date: 2021/1/4 3:18 下午
 * @Modified By:
 */
public interface BusiTradeService {
    /***
     * @DESCRIPTION: 查询交易总数
     * @author 枫伦
     * @params: [companyId, userId]
     * @return: int
     * @Date: 2021/1/13 5:12 下午
     * @Modified By:
     * @param tradeReqBO
     */
    int getTotalCountTrade(TradeReqDto tradeReqBO);

    /***
     * @DESCRIPTION: 查询平台支持的物流和ERP物流信息的映射关系
     * @author 枫伦
     * @params: [source]
     * @return: java.util.Map<com.raycloud.erp.mulplatforms.domain.LogisticsCompany, com.raycloud.erp.mulplatforms.domain.LogisticsCompany>
     * @Date: 2021/1/13 5:54 下午
     * @Modified By:
     */
    Map<LogisticsCompany, LogisticsCompany> getLogisticsCompanyMapping(String source);

    /***
     * @DESCRIPTION:查询平台订单状态和ERP系统状态映射关系
     * @author 枫伦
     * @params: [source]
     * @return: java.util.Map<java.lang.Enum, java.lang.String>
     * @Date: 2021/1/13 5:55 下午
     * @Modified By:
     */
    Map<String, String> getPlatformTradeStatusMapping(String source);

    /***
     * @DESCRIPTION:查询平台退款状态和ERP售后状态的映射关系查询
     * @author 枫伦
     * @params: [source]
     * @return: java.util.Map<java.lang.Enum, java.lang.String>
     * @Date: 2021/1/13 7:00 下午
     * @Modified By:  
     */
    Map<String, String> getPlatformAfterSaleStatusMapping(String source);

    /**
     * @DESCRIPTION: 查询单笔交易信息
     * @author 枫伦
     * @params: [tradeReqBO]
     * @return: com.raycloud.erp.mulplatforms.domain.TradeResDto
     * @Date: 2021/1/13 10:53 下午
     * @Modified By:
     * @param tradeReqBO
     */
    TradeResDto getSingerTrade(TradeReqDto tradeReqBO);

    /***
     * @DESCRIPTION: 单笔, 多笔交易发货
     * @author 枫伦
     * @params: [tradeConsignReqDto]
     * @return: java.lang.Boolean
     * @Date: 2021/1/14 9:43 上午
     * @Modified By:
     */
    Boolean uploadTradeConsign(TradeConsignReqDto tradeConsignReqDto);

    /***
     * @DESCRIPTION: 订单交易列表
     * @author 枫伦
     * @params: [tradeReqDto]
     * @return: com.raycloud.erp.mulplatforms.domain.TradeListResDto
     * @Date: 2021/1/14 3:09 下午
     * @Modified By:  
     */
    TradeListResDto getListTrade(TradeReqDto tradeReqDto);
}
